home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
System Booster
/
System Booster.iso
/
Archives
/
ForCLI
/
CD32goodies.lha
/
cdmotor.c
< prev
next >
Wrap
C/C++ Source or Header
|
1995-04-19
|
2KB
|
79 lines
/*
CD Stopper Daemon for the CD³² Multimedia Computer
( Original Idea found on Aminet-5 CD, its called
aminet5:aminet/wb/util/cd_stop.lha )
this has nothing to do with the similar program
named above - you should use your favorite; note
that the other one is much shorter but has not
the ability of being a daemon.
written by Daniel Balster, dbalster@uni-paderborn.de
*/
#include <exec/exec.h>
#include <dos/dos.h>
#include <devices/cd.h>
#include <proto/exec.h>
#include <proto/dos.h>
#define DEFAULT_DELAY 500 /* ticks */
struct {
ULONG interval;
BOOL quiet;
ULONG pads[14];
} args = {0};
int main (void)
{
struct RDArgs *rdargs;
struct MsgPort *mp;
struct IOStdReq *ior;
BOOL quit = FALSE;
if (rdargs=ReadArgs("DELAY/N,QUIET/S",(LONG*)&(args),NULL))
{
if(!args.quiet) PutStr("*** CD Stopper *** for the Amiga CD³²® Computer\nwritten by Daniel Balster\n");
if(mp=CreateMsgPort())
{
if(ior=(struct IOStdReq*)CreateIORequest(mp,sizeof(struct IOStdReq)))
{
if(!OpenDevice("cd.device",0,ior,0))
{
while (!quit)
{
if(!args.quiet) PutStr("stopping motor!\n");
ior->io_Command = CD_MOTOR;
ior->io_Length = 0; /* motor off */
DoIO(ior);
Delay (*(ULONG*)args.interval);
if(SetSignal(0L,SIGBREAKF_CTRL_C) & SIGBREAKF_CTRL_C) quit=TRUE;
}
PutStr("*** BREAK!\n");
CloseDevice((struct IORequest*)ior);
}
else PutStr("cannot access cd.device?\n");
DeleteIORequest((struct IORequest*)ior);
}
else PutStr("cannot create ioreq?\n");
DeleteMsgPort(mp);
}
else PutStr("cannot create msgport?\n");
FreeArgs(rdargs);
}
else PrintFault(IoErr(),0);
return RETURN_OK;
}